module select_precision
    implicit none
    !
    !Real precisions
	!
	!Single precision
    integer, parameter :: sp  = selected_real_kind( 6 )
	!Double precision
    integer, parameter :: dp  = selected_real_kind( 15 )
	!Intel x86 80-bit precision
    integer, parameter :: tp  = selected_real_kind( 17 )
	!Quad precision
    integer, parameter :: qp  = selected_real_kind( 31 )
	!
	!Integer kinds
	!
    integer, parameter :: i1  = selected_int_kind( 2 )
    integer, parameter :: i2  = selected_int_kind( 3 )
    integer, parameter :: i4  = selected_int_kind( 5 )
    integer, parameter :: i8  = selected_int_kind( 15 )
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	!Set working precision here
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    integer, parameter :: wp  = dp
    integer, parameter :: ip  = i4
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
end module select_precision
